home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / COM / ProTERM Mac1.2a.sit / ProTERM Mac1.2a / Macros / Contributed / David's Utilities / Resident User TDA < prev   
Text File  |  1996-07-20  |  2KB  |  120 lines

  1. // TDA - Two-Dimensional Array Library
  2. // 03-16-96 Dave Miller
  3.  
  4. // email dmiller@c4systm.com for updates and support
  5.  
  6.  // STR array = tda_num(INT rows, INT columns);
  7.  // STR array = tda_str(INT width, INT rows, INT columns);
  8.  // data = tda_get(STR array, INT row, INT column);
  9.  // STR array = tda_set(STR array, data, INT row, INT column);
  10.  // INT rows = tda_rows(STR array);
  11.  // INT columns = tda_cols(STR array);
  12.  // INT width = tda_width(STR array);
  13.  
  14. FUNC main()
  15. {
  16.  EXTERN(PREF_GET("mac1"),main(1));
  17.  RETURN;
  18. }
  19.  
  20. FUNC startup(STR file)
  21. {
  22.  RESIDENT("",0,#LibAccess);
  23.  SHARED STR ddm_tda = "010000";  // install gestalt selector
  24.  RETURN;           // version 1.0.0
  25. }
  26.  
  27. // TDA_NUM - Initialize Numeric Array
  28. // STR array = tda_num(INT rows, INT cols);
  29.  
  30. FUNC tda_num(INT rows, INT cols)
  31. {
  32.   STR ar = ARRAY_NUM((rows*cols)+1);
  33.   RETURN(ARRAY_SET(ar,rows,0)); // Use "real" 0 offset for rows parm.
  34. }
  35.  
  36. // TDA_STR - Initialize String Array
  37. // STR array = tda_str(INT width, INT rows, INT cols);
  38.  
  39. FUNC tda_str(INT width, INT rows, INT cols)
  40. {
  41.   STR ar = ARRAY_STR(width,(rows*cols)+1);
  42.   RETURN(ARRAY_SET(ar,STR_LONG(rows),0);
  43. }
  44.  
  45. // TDA_GET - Get the value of an element
  46. // data = tda_get(STR array, INT row, INT column);
  47.  
  48. FUNC tda_get(STR ar, INT row, INT col)
  49. {
  50.   INT rows;
  51.   IF (ARRAY_SIZE(ar,0) == 1)
  52.   {
  53.     rows = ARRAY_GET(ar,0);
  54.   }
  55.   ELSE
  56.   {
  57.     rows = NUM_LONG(ARRAY_GET(ar,0));
  58.   }
  59.   RETURN(ARRAY_GET(ar,((row-1)*rows)+col+1));
  60. }
  61.  
  62. // TDA_SET - Set the value of an element
  63. // STR array = tda_set(STR array, data, INT row, INT column);
  64.  
  65. FUNC tda_set(STR ar, data, INT row, INT col)
  66. {
  67.   INT rows;
  68.   IF (ARRAY_SIZE(ar,0) == 1)
  69.   {
  70.     rows = ARRAY_GET(ar,0);
  71.   }
  72.   ELSE
  73.   {
  74.     rows = NUM_LONG(ARRAY_GET(ar,0));
  75.   }
  76.   RETURN(ARRAY_SET(ar,data,((row-1)*rows)+col+1));
  77. }
  78.  
  79. // TDA_ROWS - returns the number of rows in the array
  80. // INT rows = tda_rows(STR array);
  81.  
  82. FUNC tda_rows(STR ar)
  83. {
  84.   INT rows;
  85.   IF (ARRAY_SIZE(ar,0) == 1)
  86.   {
  87.     rows = ARRAY_GET(ar,0);
  88.   }
  89.   ELSE
  90.   {
  91.     rows = NUM_LONG(ARRAY_GET(ar,0));
  92.   }
  93.   RETURN(rows);
  94. }
  95.  
  96. // TDA_COLS - returns the number of rows in the array
  97. // INT columns = tda_cols(STR array);
  98.  
  99. FUNC tda_cols(STR ar)
  100. {
  101.   INT rows;
  102.   IF (ARRAY_SIZE(ar,0) == 1)
  103.   {
  104.     rows = ARRAY_GET(ar,0);
  105.   }
  106.   ELSE
  107.   {
  108.     rows = NUM_LONG(ARRAY_GET(ar,0));
  109.   }
  110.   RETURN((ARRAY_SIZE(ar,1) - 1) / rows);
  111. }
  112.  
  113. // TDA_WIDTH - returns the width of an array.  Will return 1 if Integer array.
  114. // INT width = tda_width(STR array);
  115.  
  116. FUNC tda_width(STR ar)
  117. {
  118.   RETURN(ARRAY_SIZE(ar,0));
  119. }
  120.